# Cargar librerías necesarias
library(plm)
library(readxl)
library(lmtest)
library(sandwich)
library(car)

# Establecer ruta del archivo Excel
ruta <- "C:/Users/ACER/Desktop/EAFIT/proyecto de grado/Soportes/Regresiones Pyton/Tesis GMM R/Base de datos renombrada final 18.05.2025.xlsx"

# Leer la hoja con los datos logarítmicamente transformados
datos <- read_excel(ruta, sheet = "4. BD Comp Media resumida log")

# Convertir variables categóricas
datos$Año <- as.numeric(datos$Año)
datos$NIT <- as.factor(datos$NIT)
datos$`TAMc` <- as.factor(datos$`TAMc`)

# Convertir a panel
panel <- pdata.frame(datos, index = c("NIT", "Año"))

# Definir fórmula del modelo GMM en sistema con PAT como variable dependiente
form_pat_sys <- PAT ~ lag(PAT, 1) + MEBITDA + PRO + LIQd + TAMa +
  `ΔAct` + RDC + EA + GIA + LA + RUV + ROA + TAMi + VRI | lag(PAT, 2:3)

# Ejecutar modelo GMM en sistema (System GMM), dos pasos, con instrumentos colapsados
modelo_pat_sys <- pgmm(
  formula = form_pat_sys,
  data = panel,
  effect = "individual",
  model = "twosteps",
  transformation = "ld",
  collapse = TRUE
)

# Mostrar resumen del modelo
summary(modelo_pat_sys)

# ----- Cálculo del VIF -----
modelo_vif <- lm(PAT ~ MEBITDA + PRO + LIQd + TAMa + `ΔAct` + 
                   RDC + EA + GIA + LA + RUV + ROA + TAMi + VRI,
                 data = panel)

# Calcular y mostrar VIF
vif(modelo_vif)
